import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class text {
    //调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
    //
    //如数组：[1,2,3,4,5,6]
    //
    //调整后可能是：[1, 5, 3, 4, 2, 6]
    public static void main(String[] args) {
        int[] a=new int[]{1,2,7,2,1};
        func4(a);
        System.out.println(Arrays.toString(a));
    }
    public static void func4(int[] array) {
        int i = 0;
        int j = array.length-1;
        while (i < j) {
            //循环外面给了i < j  ,思考这里为什么还需要判断？
            //没有内层 i < j 的情况：
            //
            //i 会从0一直增加到5（数组长度）
            //
            //访问 array[5] 时数组越界
            while (i < j && array[i] % 2 != 0) {
                i++;
            }
            //i 下标一定是偶数
            while (i < j && array[j] % 2 == 0) {
                j--;
            }
            int tmp = array[i];
            array[i] = array[j];
            array[j] = tmp;
        }
    }
    //实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
    public static void transform(int[] a) {
        for(int i=0;i<a.length;i++){
            a[i]=a[i]*2;
        }
    }
    //写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static void main5(String[] args) {
        System.out.println(sum(1234));
    }
    public static int sum(int n) {
        if(n<10){
            return n;
        }
        return n%10+sum(n/10);
    }
    //按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)    （递归）
    public static void print(int n) {
        if(n<10){
            System.out.println(n%10);
            return;
        }
        print(n/10);
        System.out.println(n%10);
    }
    //递归求 1 + 2 + 3 + ... + 10
    public static int sum1(int n) {
        if(n==1){
                return 1;
    }
        return n+sum(n-1);
    }
    //递归求 N 的阶乘
    public static int fac(int n) {
        if(n==1){
            return 1;
        }
        return n*fac(n-1);
    }
    //在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
    public static int max(int a,int b) {
        return Math.max(a,b);
    }

    public static double max(double a,double b,double c) {

        double m = Math.max(a, b);
        return Math.max(m, c);
    }
    public static double add(double a,double b,double c) {
        return a+b+c;
    }

    public static int add(int a,int b) {
        return a+b;
    }
    //求斐波那契数列的第n项。(迭代实现)
    public static int fib(int n) {
        if(n==1||n==2){
            return 1;
        }
        return fib(n-1)+fib(n-2);
    }
    public static void main4(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int num=fib(n);
        System.out.println(num);
        int x=1;
        int y=1;
        int key=2;
        if(n==1||n==2){
            System.out.println(1);
        }else {
            for (int i = 1; i < n - 1; i++) {
                key=x+y;
                x=y;
                y=key;
            }
            System.out.println(key);
        }
    }
    public static void main3(String[] args) {
        Scanner sc=new Scanner(System.in);
        int sum=0;
        int num=0;
        while(sc.hasNextInt()){
            int tmp= sc.nextInt();
            sum+=tmp;
            num++;
        }
        System.out.println(sum);
        System.out.println(sum/num);
        sc.close();
    }
    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int  n = in.nextInt();
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    if(i==j||i+j==n-1){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }

                }
                System.out.println();
            }
        }
    }
    //完成猜数字游戏   ，用户输入数字，判断该数字是大于，小于，还是等于随机生成的数字，等于的时候退出程序。
    public static void main1(String[] args){
        Random random=new Random();
        int key=random.nextInt(100);
        Scanner sc=new Scanner(System.in);
        while(true) {
            System.out.println("请输入数字：");
            int num = sc.nextInt();
            if (num < key) {
                System.out.println("低了");
            } else if (num > key) {
                System.out.println("高了");
            } else {
                System.out.println("猜对了");
                break;
            }
        }
        sc.close();
    }
}
